package com.ruoyi.examination.service;

import java.util.List;

import com.ruoyi.examination.domain.ExamPaper;
import com.ruoyi.examination.domain.ExamSchedule;
import com.ruoyi.examination.domain.PaperConfig;
import com.ruoyi.examination.dto.PaperConfigDto;
import com.ruoyi.examination.vo.PaperConfigAddVo;
import com.ruoyi.examination.vo.PaperConfigSelectVo;

/**
 * 试卷信息设置Service接口
 * 
 * @author hcc
 * @date 2025-10-21
 */
public interface IPaperConfigService 
{
    /**
     * 查询试卷信息设置
     * 
     * @param paperConfigId 试卷信息设置主键
     * @return 试卷信息设置
     */
    public PaperConfig selectPaperConfigByPaperConfigId(String paperConfigId);

    /**
     * 查询试卷信息设置列表
     * 
     * @param paperConfig 试卷信息设置
     * @return 试卷信息设置集合
     */
    public List<PaperConfig> selectPaperConfigList(PaperConfig paperConfig);

    /**
     * 新增试卷信息设置
     * 
     * @param paperConfig 试卷信息设置
     * @return 结果
     */
    public int insertPaperConfig(PaperConfig paperConfig);

    /**
     * 修改试卷信息设置
     * 
     * @param paperConfig 试卷信息设置
     * @return 结果
     */
    public int updatePaperConfig(PaperConfig paperConfig);

    /**
     * 批量删除试卷信息设置
     * 
     * @param paperConfigIds 需要删除的试卷信息设置主键集合
     * @return 结果
     */
    public int deletePaperConfigByPaperConfigIds(String[] paperConfigIds);

    /**
     * 删除试卷信息设置信息
     * 
     * @param paperConfigId 试卷信息设置主键
     * @return 结果
     */
    public int deletePaperConfigByPaperConfigId(String paperConfigId);

    /**
     * 添加试卷信息设置
     * @param paperConfigAddVo
     * @return
     */
    public int addPaperConfig(PaperConfigAddVo paperConfigAddVo);

    /**
     * 修改试卷信息设置
     * @param paperConfigAddVo
     * @return
     */
    public int editPaperConfig(PaperConfigAddVo paperConfigAddVo);

    /**
     * 查询试卷信息设置列表
     * @param paperConfigSelectVo
     * @return
     */
    public List<PaperConfigDto> getList(PaperConfigSelectVo paperConfigSelectVo);

    /**
     * 获取试卷信息设置详情
     * @param paperConfigId
     * @return
     */
    public PaperConfigDto getPaperConfigInfo(String paperConfigId);

    /**
     * 生成试卷
     * @param examSchedule
     * @return
     */
    public int generatedPaper(ExamSchedule examSchedule);

    /**
     * 逻辑删除试卷信息设置
     * @param paperConfigIds
     * @return
     */
    public int logicalRemove(String[] paperConfigIds);
}
